/*
 * @Description: 
 * @Author: restart
 * @Date: 2024-10-25 10:34:20
 * @LastEditors: Zhang_xx
 * @LastEditTime: 2025-02-21 18:05:13
 */
import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://localhost:8070',
  timeout: 10000,
})

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    // 例如，添加请求头或设置请求参数
    if (config.url !== "/login") {
      config.headers["Authorization"] = `Bearer ${localStorage.getItem("token")}`
    }
    // 设置新的请求token接口的请求头
    if (config.url === '/refreshToken') {
      config.headers["Authorization"] = `Bearer ${localStorage.getItem("refreshToken")}`
    }
    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 响应拦截器
instance.interceptors.response.use(
 async (response) => {
    // 对响应数据做点什么
    // return response
    if (response.data.code === 0) {
      // 存取长token和短token
      response.data.data.token && localStorage.setItem("token", response.data.data.token)
      response.data.data.refreshToken && localStorage.setItem("refreshToken", response.data.data.refreshToken)
      return response.data.data
    } else if (response.data.code === 401) {
      // 重新请求 为了拿到新的短token，刷新token的接口，携带长token过去
      // 导入刷新token的接口getRefesh
      // let result = await getRefesh().then((res) => {
      //   return res
      // })
      // if (result) {
      //   // 重新发送已失效的token的请求
      //   response.config.headers.Authorization = `Bearer ${localStorage.getItem("token")}`
      // }
    }
  },
  (error) => {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)
//  处理在api文件中get或者post传参是data还是post的问题
function request(options:any) {
  options.method = options.method || 'get'
  if (options.method.toLowerCase() === 'get') {
    options.params = options.data
  }
  return instance(options)
}
export default request